package com.soup.common.module.sys.service;

import com.soup.common.constant.CommonConstant;
import com.soup.common.service.BaseService;
import com.soup.common.exception.sys.UserNotFoundException;
import com.soup.common.exception.sys.UserorForbiddenException;
import com.soup.common.module.sys.data.AuthResponse;
import com.soup.common.module.sys.data.SignInRequest;
import com.soup.common.module.sys.entity.User;

/**
 * 用户服务类
 *
 * @author zhaoyi
 */
public interface UserService extends BaseService<User> {

    /**
     * 校验登陆用户信息
     *
     * @param user 查询到的用户信息
     */
    default void checkUser(User user) {
        if (null == user || user.getDeleted() == CommonConstant.DELETED) {
            throw new UserNotFoundException();
        }

        if (user.getUserStatus() == CommonConstant.FORBIDDEN) {
            throw new UserorForbiddenException();
        }
    }

    /**
     * 登陆
     *
     * @param signIn 登陆入参
     * @return 返回登陆token
     */
    AuthResponse login(SignInRequest signIn);

    /**
     * 根据角色id统计用户
     *
     * @param roleId 角色id
     * @return 统计数值
     */
    int countbyRoleId(Integer roleId);

    /**
     * 创建一个系统用户，姓名和唯一标识符生成
     *
     * @param name 姓名
     * @param identity 唯一表示符，用于生成密码
     */
    void createSysUser(String name, String identity);

    /**
     * 用户登出
     */
    void logout();
}
